'''
魔术方法 内建方法 内部方法
python中提前定义好的方法
    __init__()初始化方法，创建对象时，自动调用
    __str__() 打印对象时，需要改变打印的结果，可以在该方法中定义打印结果
    __del__()  对象销毁前调用的方法
    __new__()  单例类 自己扩展

'''
class Dog:
    type = "拉布拉多"

    def __init__(self,name,age):
        self.name = name
        self.age = age

    def run(self):
        print("四条腿狂奔")

    def __str__(self):
        return f"{self.name}的品种为{Dog.type},年龄为{self.age}"

    def __del__(self):
        print("---对象被销毁时，执行该方法---")

ahuang = Dog("阿黄",2)
print(ahuang) # <__main__.Dog object at 0x0000027498BD27B0>
# 打印对象，默认结果为对象的类型和内存地址 不同对象的内存地址不同

bai = ahuang
hei = Dog("小黑",2)
print(hei)
print(bai)